import { Ollama } from "@langchain/ollama";
import { SecureCache } from "./utils.js";

// 创建安全缓存实例
const secureCache = new SecureCache();

// 配置模型并启用安全缓存
const model = new Ollama({
  model: "llama3",
  cache: secureCache, // 开启了缓存，缓存使用的是自定义的安全缓存类
  stream: true, // 开启了流式回复
});

async function callWithStreamAndCache(inputText) {
  const start = Date.now(); // 记录启示时间
  const stream = await model.stream(inputText); // 流式回复

  let fullResponse = ""; // 拼接完整答案
  for await (const chunk of stream) {
    process.stdout.write(chunk); // 实时打印
    fullResponse += chunk; // 累积结果，用于缓存比较
  }

  const end = Date.now(); // 记录结束时间
  console.log(`\n⏱️ 本次耗时：${end - start}ms`);
  return fullResponse;
}

// 第一次调用（无缓存）
console.log("\n🎯 第一次调用（无缓存）：");
await callWithStreamAndCache("请用中文介绍一下AI的影响");

// 第二次调用（应命中缓存）
console.log("\n\n🎯 第二次调用（命中缓存）：");
await callWithStreamAndCache("请用中文介绍一下AI的影响");
